关联分析及其应用

关联分析是通过寻找大型数据中的隐藏关系,确认可用的关系规则,这种确认的关系即是关联规则。其中典型的应用例子为购物篮分析,沃尔玛的关联分析得出的“尿布-啤酒”规则。实际应用的场景,不仅限于购物篮分析,还有可能应用于网页挖掘等。

1. 关联分析

在进行关联分析时,会涉及到以下相关概念:

  • 支持度计数 是对项集(Itemset)的事务个数统计。$k$ 项集表示存在 $k$ 个项,例如 ${\text{啤酒},\text{牛奶}}$ 是一个 2 项集;如果是空集,那么 $K$ 表示为零
  • 关联规则 表示存在 $X \rightarrow Y$ 的关系表达式,其关系的强度需要通过支持度(Support)和置信度(Confidence)来度量。但仅依赖支持度和置信度,可能存在虚假模式的可能性,因此引入了另一个参数提升度(Lift)进行分析。
  • 关联规则支持度 用于统计数据集中频繁程度,表达式 $s(X\rightarrow Y)=\frac{\sigma(X\cup Y)}{N}$,其中分子表示 $X\cup Y$ 的计数,分母表示样本容量。其意义在于判断规程重要程度,应用上是用于删除掉低重要性规则
  • 关联规则置信度 确定的是 $Y$ 在包含 $X$ 的事务中出现的频繁程度,从贝叶斯规则来看它表示的给定 $X$ 条件下 $Y$ 发生的概率,其表达式是 $s(X\rightarrow Y)=\frac{\sigma(X \cup Y)}{\sigma(X)}$,其是用于推断规则的可靠性
  • 关联规则提升度 应用关联规则和不应用规则产生结果的比例,其表达式为 $l(X\rightarrow Y)=\frac{s(X\rightarrow Y)}{s(X\rightarrow X)}$。当提升度等于 $1$ 时,关联规则应用与否结果相同,大于 $1$ 表示关联规则能产生更好的效果,小于 $1$ 表示关联规则存在负相关作用

1.2 关联分析应用

在经典的“尿布-啤酒”的商品销售关联分析之外,关联分析还可以应用于更多的其他场景中。这种相同项的分析模式,还可以应用于内容-内容分析:1)分析站点内页面浏览的相关性,2)用户关键字搜索关联分析,3)不同场景的关联分析,例如一定的会话 session 中分析用户浏览产品和购买产品分析,浏览价格和购买价格的关联分析等不同方式,其中可应用于促销活动的价格策略制定。4)相同场景关联分析,例如对页面功能、页面应用选择等进行关联分析,这种分析模式可以应用于功能组合、开发和身体优化的方向确认;针对内容查看、点击的关联分析可以查找打包、组合以及其他营销策略以及提升用户体验等方向。

除了通过单次“购物篮”进行关联分析寻找可用规则外,还可以在此基础上添加上“时间”序列的维度进行分析。这种添加时间维度分析的模式,和“完成某个事务之后在特定的时间周期内完成其他的事务”类似。例如通过用户在上次对产品/服务行为和时间,推测用户下次可能的有行为的产品/服务以及可能的时间。

2. 关联规则产生

多数关联规则挖掘算法采用的方法是分为以下两个步骤:

  1. 频繁项集产生,目的是挖掘出满足最小支持度的项集,以生成这些频繁项集
  2. 产生规则,从频繁项集中提取高置信度的规则,这类规则即是强规则

在以上两个步骤中,频繁项集的产生需要消耗大量的计算资源,因此第一步是需要有效的算法来完成。

2.1 Apriori 算法

Apriori 算法开创性的使用来支持度剪枝计数,控制候选项集的指数增长。假定支持度的阈值为 $60%$,那么在后续项集的最小支持度计数约为 $3$(项集的计数少于 $3$ 时,会被抛弃)。

3. Apriori 应用示例

算法依赖于第三方库 apriori,具体的代码示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 导入库
import apriori

# 转换为关联所用的记录模式
ids = df.order_id.unique()
records = [data[data['order_id']==each_id]['product_name'].tolist() for each_id in ids]

# 通过调用自定义的apriori做关联分析,分别确认支持度和置信度的阈值,搭建相应的规则
minS = 0.01
minC = 0.05
L, suppData = apriori.apriori(records, minSupport=minS)
rules = apriori.generateRules(records, L, suppData, minConf=minC)

# 创建频繁规则结果
result = pd.DataFrame(rules, columns=['item1', 'item2', 'instance', 'support', 'confidence',
'lift'])
作者

ZenRay

发布于

2021-03-24

更新于

2021-04-19

许可协议

CC BY-NC-SA 4.0